/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Conexao;

import Opcoes.*;
import java.io.*;
import java.net.*;
import java.util.StringTokenizer;
import java.util.concurrent.ExecutorService;

    /**
    *
    *
    *@param Recebe como parâmetro o executorService e o gerenciador como parâmetros(referência), esta classe é utilizada para se conectar em servidores
    *
    *
    **/
public class FluxoCliente implements Runnable {

    private Socket socket;
    private ExecutorService exec;
    private Gerenciador gerenciador;
    private DataInputStream in;
    private DataOutputStream out;
    private String msg;

    public FluxoCliente(ExecutorService apps, Gerenciador ger) throws UnknownHostException, IOException {

        this.exec = apps;
        this.gerenciador = ger;
        
    }

    public void run() {
        
        
        try {
            StringTokenizer tempStringTokenizer;
            //socket = new Socket(JOptionPane.showInputDialog("IP:"), Conexoes.CONNECT_PORT);
            socket = new Socket("localhost", Conexoes.CONNECT_PORT);
            
            in = new DataInputStream(socket.getInputStream());
            out = new DataOutputStream(socket.getOutputStream());
            
            out.writeUTF(Conexoes.CONNECT_MSG);
            msg = in.readUTF();
            
            if (msg.startsWith(Conexoes.CONNECT_OK.substring(0, 10)))
            {
                System.out.printf("CLIENT:\nHOST:%s\tMSG:%s\n",socket.getInetAddress().toString(),msg);
                System.out.printf("OK Recieved!...\n");
                
                if(this.gerenciador.setSockets(socket))
                    System.out.println("Nova conexão criada!");
                else
                    System.out.println("Erro ao criar conexao!");
            }

        } catch (SocketException e) {
                System.out.println("CLIENTE: Erro ao se conectar!");
        } catch (UnknownHostException e) {
            System.err.println("CLIENTE: host nao encontrado.");
            System.exit(1);
        } catch (IOException e) {
            System.err.println("CLIENTE: Servidor recusou a conexao!.");
            System.exit(1);
        }

    }

    public void encerrar() throws IOException {

        System.out.println("Cliente:conexao CLOSED!");
        exec.shutdown();

    }

}
